﻿/* Poscarga de elementos externos.
 * La precarga es hasta que se carga el 100% del archivo principal / _level0.
 * La poscarga es la carga de elementos dentro del principal que se contabilizan dentro del mismo medidor de carga que el del principal.
 *
 * Forma de uso: buscar donde dice: "Completar..." para personalizarlo.
 *
 * Bruma Rubí, 17-nov-2009.
 */

// CÓDIGO PARA CARGAR ARCHIVOS EXTERNOS EN LA PÁGINA
// FORMA DE USO:
// 1. desbloquear las líneas con los nombres de archivo que se quieran habilitar para cargarse.
// 2. en la línea habilitada poner el número de sección correcto (seccion_5, seccion_3, etc.)
// 3. ATENCIÓN: la última línea no lleva coma final, todas las demás sí.
// 4. Luego de hacer los pasos 1, 2 y 3, abajo al final de este archivo también hay que cambiar algo (ver abajo)
// palabras clave: carga archivo externo galeria formulario contacto reproductor video
var loadInit:Boolean = false;
var recursos:Array = [
	{url: "formulario.swf", destino: pagina.contenido.seccion_6/*Reemplazar con el nombre de la sección donde cargar el formulario de contacto (recordar que tiene que estar en este mismo fotograma)*/.formulario}//, Recordar agregar una coma si hay más archivos externos
	//{url: "galeria.swf", destino: pagina.contenido.seccion_5/*Reemplazar con el nombre de la sección donde cargar la galería (recordar que tiene que estar en este mismo fotograma)*/.galeria},
	//{url: "scroll general.swf", destino: pagina.contenido.seccion_1/*Reemplazar con el nombre de la sección donde cargar el scroll (recordar que tiene que estar en este mismo fotograma)*/.scrolle},
	//{url: "scroll general.swf", destino: pagina.contenido.seccion_2/*Reemplazar con el nombre de la sección donde cargar el scroll (recordar que tiene que estar en este mismo fotograma)*/.scrolle},
	//{url: "scroll general.swf", destino: pagina.contenido.seccion_3/*Reemplazar con el nombre de la sección donde cargar el scroll (recordar que tiene que estar en este mismo fotograma)*/.scrolle},
	
	// Los archivos que se cargan adentro de un scroll tienen que tener "destino: 0", "destino: 1", "destino: 2", etc. (tantos como archivos externos haya, el "destino" es un número que nunca se debe repetir.)
	//{url: "archivo_1.swf"/*Reemplazar con el nombre del archivo.swf que va adentro del scroll*/, destino: 0},
	//{url: "archivo_2.swf"/*Reemplazar con el nombre del archivo.swf que va adentro del scroll*/, destino: 1},
	//{url: "archivo_3.swf"/*Reemplazar con el nombre del archivo.swf que va adentro del scroll*/, destino: 2}
	/* Completar con la cantidad de ocurrencias que sea necesario, cada una con los valores de los archivos externos a cargar */
];
// FIN CÓDIGO PARA CARGAR ARCHIVOS EXTERNOS EN LA PÁGINA

var i:Number = 0;
var recursos_length:Number = recursos.length;

var cargas:Array = new Array();
for(i=0; i<recursos_length; i++) {
	cargas.push(0);
}
i=0;

medidor.onEnterFrame = function() {
	// bytes carga externa: bytesTotal + sum(cargas)
	// bytes carga pre y pos/externa: bytesTotal + bytesPosCarga
	var sum_cargas:Number = 0;
	var j:Number;   // se llama j por las dudas de no superponerlo con i
	var cargas_length:Number = cargas.length;
	
	for(j=0; j<cargas_length; j++) {
		sum_cargas += cargas[j];
	}
	
	var pct:Number = Math.round( (bytesTotal + sum_cargas) /(bytesTotal + bytesPosCarga) *100);

	if(pct>this.pct_) {
		this.pct_++;
	}

	medidor_usuario.notif_progreso(pct);
	
	/* Condiciones de salida:
	 * sum_cargas==bytesPosCarga: provee un control más exhaustivo sobre
	 * la finalización de la carga externa (no es necesario, con el resto de las variables se puede realizar el mismo trabajo)
	 *
	 * pct==this.pct_ (inhabilitado en pos de medidor_usuario.finalizado()):
	 * provee la simulación de progresión del medidor
	 * de carga hasta el número final=100, sin esto se da por finalizado
	 * cuando realmente termina de cargar la página, antes del número final
	 * (tampoco es del todo necesario pero más que lo anterior)
	 */
	if( /*sum_cargas==bytesPosCarga && */ /*pct==this.pct_ &&*/ medidor_usuario.finalizado() && loadInit) {
		// limpieza de variables sin usar
		delete this.onEnterFrame;
		delete cargas;
		loadInit = undefined;
		/* Completar acá con la transición de salida del medidor
		 */
		// sugerencia: Tweener... onComplete: fin_transicion_salida
		medidor_usuario.transicion_salida({onCompleteListener:this._parent, onCompleteFunction: "fin_transicion_salida"});
		//Tweener.addTween(this, {_alpha: 0, delay: 0.25, time: 0.5, transition: "linear", onComplete: fin_transicion_salida});
	}
	
}

function fin_transicion_salida() {
	// limpieza de MovieClip's sin usar
	_root.createEmptyMovieClip("ex_medidor", medidor.getDepth());
	pagina.notif_fin_carga();
}

var mcl:MovieClipLoader = new MovieClipLoader();
var mcl_lis:Object = new Object();
mcl_lis.onLoadProgress = function(target_mc: MovieClip, loadedBytes: Number, totalBytes: Number) {
	// Cálculo del nuevo porcentaje:
	trace("carga - Progreso de la carga de " + target_mc + ": " + loadedBytes + " de " + totalBytes + ", cargas: " + cargas + ", cargas["+i+"]: " + cargas[i] + ".");
	cargas[i] = loadedBytes;
}

mcl_lis.onLoadComplete = function(target_mc:MovieClip) {
}

// hip. onLoadComplete se invoca antes que onLoadInit
mcl_lis.onLoadInit = function(target_mc:MovieClip) {
	/* Este código venía de onLoadComplete
	 * con el nuevo requerimiento de aceptar concatenación de cargas ( if(recursos[i].destino==número) )
	 * fue necesario moverlo a onLoadInit ya que la carga concatenada depende de que haya sido inicializado el objeto
	 * del cual depende la carga.
	 */
    // INICIO CÓDIGO MOVIDO
	// Acumular bytes cargados bytesAcum
	trace("carga - Carga completa de " + target_mc + ".");
	i++;
	if(i<recursos_length) {
		/* CÓDIGO PARA LA CARGA DE ARCHIVOS EXTERNOS DENTRO DE UN SCROLL
		 * FORMA DE USO:
		 *
		 * 1. En páginas que no usan scroll
		 * 1.1 No hacer nada (puede quedar este código que no va a afectar).
		 *
		 * 2. Páginas que tienen hasta 3 scroll's
		 * 2.1. en la parte de arriba asegurarse de que "destino" no se repite (ver arriba "CÓDIGO PARA CARGAR ARCHIVOS..."
		 * 2.2. Reemplazar en donde dice "seccion_1" / "seccion_2" / "seccion_3" por el nombre de la sección que corresponda en cada caso (cada sección se corresponde con un "destino", observar que dice "destino==0", "destino==1" y "destino==2")
		 *
		 * 3. Para páginas con más de 3 scroll's
		 * 3.1. Repetir (copiar y pegar) el código de carga, modificando el número de destino y el nombre de la sección.
		 */
		if(recursos[i].destino==0) {
		    // CÓDIGO DE CARGA DEL SCROLL
			// Palabras clave: scroll carga externa
			recursos[i].destino = pagina.contenido.seccion_1/*Reemplazar con el nombre de la sección donde se carga el contenido del scroll.*/.scrolle.todo.contenido_mc;
			
			// RECORDAR que los "trace" no tienen ningún efecto sobre el programa final (no es necesario copiar su código)
			// Quedan para cuando hay algún problema y es necesario tracear el programa en busca de la falla.
			//trace("script medidor externo, destino: " + pagina + ".");
			//trace("script medidor externo, destino: " + pagina.contenido + ".");
			//trace("script medidor externo, destino: " + pagina.contenido.seccion_1 + ".");
			//trace("script medidor externo, destino: " + pagina.contenido.seccion_1.scrolle + ".");
			//trace("script medidor externo, destino: " + pagina.contenido.seccion_1.scrolle.todo + ".");
			//trace("script medidor externo, destino: " + pagina.contenido.seccion_1.scrolle.todo.contenido_mc + ".");
		}
		if(recursos[i].destino==1) {
		    // CÓDIGO DE CARGA DEL SCROLL
			// Palabras clave: scroll carga externa
			recursos[i].destino = pagina.contenido.seccion_2/*Reemplazar con el nombre de la sección donde se carga el contenido del scroll.*/.scrolle.todo.contenido_mc;
		}
		if(recursos[i].destino==2) {
		    // CÓDIGO DE CARGA DEL SCROLL
			// Palabras clave: scroll carga externa
			recursos[i].destino = pagina.contenido.seccion_3/*Reemplazar con el nombre de la sección donde se carga el contenido del scroll.*/.scrolle.todo.contenido_mc;
		}
		
		mcl.loadClip(recursos[i].url, recursos[i].destino);
	}
    // FIN CÓDIGO MOVIDO, sigue un "else if" que antes era un "if"
	else if(i>=recursos_length) {
		/* código de finalización del medidor e inicialización de la página web
		 * sugerencias:
		 * 1. _root.gotoAndPlay(_root._currentframe+1);
		 * 2. dispatchEvent({target:this, type:"loadInit"});
		 */
		trace("carga - Carga externa completa.");
		// limpieza de variables si usar
		delete recursos;
		i = undefined;
		recursos_length = undefined;
		loadInit = true;
		
		/* Completar acá con cargas de elementos fuera de la poscarga.
		 * Este es, elementos que se pueden empezar a cargar inmediatamente
		 * cuando termina la poscarga pero no forman parte de ella.
		 *
		 * Tener en cuenta que como el medidor de carga puede tener una
		 * animación que tarde más en progresar que el progreso de la carga
		 * real, se dará que se empezarán a cargar los siguientes recursos
		 * antes de finalizar el medidor de carga su animación.
		 */
		 
		//INICIO: acá suele ir el inicio del diagrama de carga paralela:
		// archivos que se cargan mientras el usuario está viendo la página
		CargaParalela.getInstance().cargar();
	}
}

// CÓDIGO PARA CARGAR ARCHIVOS EXTERNOS EN LA PÁGINA (continúa de arriba)
// FORMA DE USO:
// 1. Desbloquear **1**
// 2. Bloquear **2**

// palabras clave: carga archivo externo galeria formulario contacto reproductor video
// Carga del archivo inicial
// **1**
trace("carga - Iniciando carga externa de " + recursos[0].url + " en " + recursos[0].destino + ".");
mcl.addListener(mcl_lis);
mcl.loadClip(recursos[0].url, recursos[0].destino);
// FIN **1**

// Salteo de carga de archivos externos
// **2**
//mcl_lis.onLoadInit();
// FIN **2**